cgi

Otázka od: Tomáš Čejka

29. 9. 2002 17:49

Nemel by prosim vas nekdo z vas nejakej help, nebo priklad s popisem
(nejlip v cestine) na cgi skript? (Potreboval bych udelat webove
pocitadlo, ale nevim jak na to. Hlavne se to musi rychle nacitat.)
        Diky Tomas

Odpovedá: Martin

29. 9. 2002 18:21

Dobrý den,
29. září 2002, 18:44:43, napsal jste:

TČ> Nemel by prosim vas nekdo z vas nejakej help, nebo priklad s popisem
TČ> (nejlip v cestine) na cgi skript? (Potreboval bych udelat webove
TČ> pocitadlo, ale nevim jak na to. Hlavne se to musi rychle nacitat.)
TČ> Diky Tomas

Tak si ho napis v PHP nebo se podivej tady http://www.hotscripts.com/

--
S pozdravem,
 Martin
 martin@aprog.cz

Odpovedá: Tomáš Čejka

29. 9. 2002 18:56

Bohuzel s php neumim.

-----Original Message-----
From: delphi-l-owner@clexpert.cz [mailto:delphi-l-owner@clexpert.cz] On
Behalf Of Martin
Sent: Sunday, September 29, 2002 7:16 PM
To: Tomáš Čejka
Subject: Re: cgi


Dobrý den,
29. září 2002, 18:44:43, napsal jste:

TČ> Nemel by prosim vas nekdo z vas nejakej help, nebo priklad s popisem

TČ> (nejlip v cestine) na cgi skript? (Potreboval bych udelat webove
TČ> pocitadlo, ale nevim jak na to. Hlavne se to musi rychle nacitat.)
TČ> Diky Tomas

Tak si ho napis v PHP nebo se podivej tady http://www.hotscripts.com/

--
S pozdravem,
 Martin
 martin@aprog.cz

Odpovedá: Viliam Mlich

30. 9. 2002 16:36

> Nemel by prosim vas nekdo z vas nejakej help, nebo priklad s popisem
> (nejlip v cestine) na cgi skript?

Na to ziaden help nepotrebujes. CGI-skript je program ako kazdy iny,
akurat v STDIN (nacitas pomocou read) dostane parametre a do STDOUT
vratis vystup (pomocou 'writeln').

Takto nejak vypada zaciatok:

=== cut begin TESTCGI.DPR ===

program testcgi;
{$APPTYPE CONSOLE}
uses
  SysUtils, windows, ShellAPI;
var
 input : string;

... atd ...

begin
Writeln('Content-type: text/html',#13,#10); //rika ze vystup je HTML

if (Pos('GET',GetEnvVar('REQUEST_METHOD')) > 0)
   then input:=GetEnvVar('QUERY_STRING')
   else if (Pos('POST',GetEnvVar('REQUEST_METHOD')) > 0)
        then read(input)
        else begin
             read(input);
             input:=input+'&'+GetEnvVar('QUERY_STRING');
             end;
... atd ...

Este je problem povyberat z toho vstupneho streamu parametre, ja to
robim takto:

function hodnota_parametru (const jmeno: string):string;
 var
  zacatek, konec : integer;
 begin
  zacatek:=Pos((jmeno+'='),input);
  if zacatek = 0 //ked neni vobec parameter
    then begin
         Result:='';
         Exit;
         end;
  zacatek:=zacatek+Length(jmeno)+1; // "+1" je "="
  Result:=copy(input,zacatek,Length(input)-zacatek+1); //keby nebol "&"
  konec:=pos('&',Result)-1;
  if konec>0
    then Result := copy(Result,1,konec) // ked je "&" 2.
    else if konec = 0 then result:=''; // ked je "&" hned
  Result:=DecodeURL(Result);
 end;

V pokrocilejsich verziach delphi je na to aj nejaka komponenta, ale
nejak som sa s nou neskamaratil, nerad pouzivam veci, do ktorych nevidim
a na moj vkus to bolo prilis zlozite. To 'DecodeURL' prevadza znaky,
ktore su vo vstupnom stringu ako '%9F' na normalny znak:

function DecodeURL(const Value: string): string;
var
  x: Integer;
  c: Char;
  s: string;
begin
  Result := '';
  x := 1;
  while x <= Length(Value) do
  begin
    c := Value[x];
    Inc(x);
    if c <> '%' then
                if c = '+'
                  then Result:=Result+' '
                  else Result := Result + c
    else
      if x < Length(Value) then
      begin
        s := Copy(Value, x, 2);
        Inc(x, 2);
        if pos(#13, s) + pos(#10, s) = 0 then
          Result := Result + Char(StrToIntDef('$' + s, 32));
      end;
  end;
end;

bye
vmlich

Odpovedá: Martin

29. 9. 2002 21:24

Tak si to pocitadlo stahni. Napr.
http://www.ekstreme.com/phplabs/phpcounter.zip

Kdyz se podivas na www.hotscripts.com tak tam najdes spoustu skriptu
nejen v PHP, ale i v Perlu.

TČ> Bohuzel s php neumim.

--
S pozdravem,
 Martin
 martin@aprog.cz

Odpovedá: Martin

30. 9. 2002 20:57


VM> Na to ziaden help nepotrebujes. CGI-skript je program ako kazdy iny,
VM> akurat v STDIN (nacitas pomocou read) dostane parametre a do STDOUT
VM> vratis vystup (pomocou 'writeln').

Ono zalezi na tom, jaky system je na serveru. Pokud mas hosting, tak
je tam s nejvetsi pravdepodobnosti Linux a tam tvuj kod nepobezi.
Pocitadlo pristupu bych opravdu radeji delal v PHP nebo Perlu. Pak mam
jistotu, ze to pobezi jak na Linuxu, tak na Win.

Martin